package com.igeekhome.service;

import com.igeekhome.dto.SectionNetworkDto;
import com.igeekhome.pojo.DNetwork;
import com.igeekhome.util.DtreeLayUINode;
import com.igeekhome.util.ResultBean;
import com.igeekhome.util.TableResultBean;

import java.util.List;


/**
 * @author Romeo
 */

public interface INetworkService {
    /**
     *  得到Dtree树状图的网点信息
     * @param nid 当前网点
     * @return Dtree封装的类
     */
    DtreeLayUINode selectByIdToTree(Integer nid);

    /**
     *  获取网点的table页面信息
     * @param nid 当前网点信息
     * @return TableResultBean
     */
    TableResultBean selectByIdToTable(Integer nid, Integer page, Integer limit);

    /**
     * 查询所有网点信息，主要用于网点外键
     * @return  List<DNetwork>
     */
    List<DNetwork> selectAll();

    /**
     * 网点的新增操作
     * @param dNetwork 前台传递的信息
     * @return 返回成功或者失败
     */
    ResultBean add(DNetwork dNetwork, String province, String city, String area, String address);

    /**
     * 网点的更新操作
     * @param dNetwork 前台传递的信息
     * @return 返回成功或者失败
     */
    ResultBean edit(DNetwork dNetwork, String province, String city, String area, String address);

    /**
     * 网点的逻辑删除
     * 理论上删除网点操作有子网点的是不可以被删除的
     * 但是实际上是一旦删除的网点是父网点的话所有子网点都需要被删除
     * 所以可能是一个批量删除
     * @param nid 传递所需要删除的网点nid以及其子网点的所有ids
     * @return 返回成功还是失败
     */
    ResultBean logicDelete(Integer nid);


    List<DNetwork> selectByCondition(DNetwork dNetwork);

    /**
     * 查询网点的id和name
     * @param strId
     * @return
     */
    List<SectionNetworkDto> selectNetworkInIds(String strId);


}
